コンピュータに保存されているデータは、さまざまなハードウェア障害、操作ミス、災害などで簡単に消失してしまいます。
なにも対処しないとデータは復活することができません。データを守るためにはデータのバックアップが必要です。
また、バックアップをシステムにあった形で実行する必要があるため、バックアップ方法・時期・媒体をよく検討する必要があります。
バックアップには、データの保存方法により、完全バックアップ・差分バックアップ・増分バックアップの3つがあります。
バックアップには、データバックアップとシステムバックアップの2種類があります。
データバックアップとはデータのみをバックアップする方法です。通常、バックアップしておけば、もしもデータが破損、消失した場合でも復旧できますが、データバックアップの場合、災害や障害等でシステムが壊れてしまうとデータの復元に時間がかかります。システムを復旧してからデータの復元になります。
システムバックアップとはコンピュータのシステムごとバックアップする方法です。そのため、災害時でも短い時間帯でシステム・データを復旧することができます。システムの復元とデータの復元を同時に行うことができる。
システムが壊れた場合、システム・アプリケーションの再インストール後にどのデータを復元すればシステムを元の状態にできるかを考慮してバックアップを行うデータを決定する。
多くの場合、以下のディレクトリのデータについてはバックアップが最低限必要である。
バックアップ及びリカバリーを行うオープンソースのソフトウェアには以下のようなものがある。
【 Amanda 】
Amandaは、1台のバックアップサーバを使用して複数のクライアントデータをストレージ機器に記録することが可能です。
Amandaのバックアップに使うストレージ機器は磁気テープ、ハードディスク、NAS、光学装置など、多くのバックアップデバイスをサポートしている。
Amandaはデータバックアップに適したソフトウェアです。
Bacula(バキュラ)とは、オープンソースのバックアップ&リカバリソリューションです。複数OSが混在する異種ネットワークでのバックアップも可能であるため、エンタープライズレベルの統合的なバックアップシステムを構築できます。
Baculaは、サーバ/クライアントベースのバックアップ機能を提供します。サーバ機能は1台のコンピュータ上で動作し、ネットワーク上のすべてのクライアントデータについてテープやディスクを含むさまざまな種類のストレージデバイスにバックアップできます。
Baculaは「高度なストレージ管理機能」や「紛失/破損ファイルの検索および回復機能」など豊富な機能を備えているにもかかわらず、非常に使い勝手が良い点が特徴です。
バックアップシステムを構成するアーキテクチャ・役割が細分化されており、エンタープライズ向けの設計。
3つのデーモンが独立して動作します。
bacula-dir バキュラ全体の管理役。バックアップジョブ管理も行う
bacula-sd バキュラのバックアップデータ書き込み先のストレージの管理
bacula-fd バキュラのバックアップを実際に実行するクライアント
Bareos Backup Solutionは、次のコンポーネントで構成されています。 Bareos Director –これは、すべてのバックアップ、復元などを管理および監視する中央プログラムです。また、データのバックアップとリカバリをスケジュールします。 Bareos Console – TTYなどのシェルウィンドウを介して、ユーザーとBareosDirector間の対話を可能にします。 Bareos File Daemon –これは、バックアップを実行するために各クライアントにインストールされます。 バックアップするデータを検出し、BareosDirectorからの要求に応じてBareosストレージに送信します。 Bareos Storage Daemon – BareosFileDaemonから送信されたデータを物理バックアップメディア/ボリュームに保存します。 それらのいくつかは単一の環境に存在する可能性があり、すべてが単一のBareosディレクターによって制御されます。 Catalog –これは、バックアップされたすべてのファイルのファイルインデックスとボリュームデータベースを保存する義務のある多数のプログラムで構成されています。
【 BackupPC 】BackupPCは、Webベースのフロントエンドを備えたディスクツーディスクバックアップソフトウェアです。
大容量ハードディスクのバックアップのために、大容量のハードディスクを利用することも一般的になりつつあります。
DVD、CD-R、MOなどがバックアップ用に使われています。
バックアップ用途に最も利用されてきたメディアがテープです。Linuxをはじめ、UNIX系の環境では、DDS方式のテープを個別に利用する形態が主流でした。各種のテープデバイス仕様は高速/大容量化を続けていて、1メディア当たり非圧縮で100Gbytesを保存できるものも登場しています。
1.dd コマンドによるバックアップ
dd コマンドの使い方は至って簡単です。if= にコピー元のHDDを指定し、of= にコピー先のHDDを指定します。HDDをまるごと複製したい場合に重宝します。この手順でHDDを複製した場合、パーティションの切り方なども全く同じ構成のディスクができあがりますので、コピー元とコピー先のHDD
容量は同容量である必要があります(コピー先のほうが容量が大きい場合は、残った領域は空領域となります)。
# dd if=/dev/hda of=/dev/hdb コピー元 コピー先 |
なお、HDDの容量不足などの理由で、より容量の大きいHDDへデータを移動したい場合(パーティションの切り方を、コピー元とコピー先で変更したい場合)などには、dump とrestore などのコマンドが推奨されます。
bs | 一度のI/O操作で転送されるデータサイズ(bytes)を指定 |
ibs=bytes | 一度に指定したバイトのブロックを読み込む。デフォルトは512byte |
obs=bytes | 一度に指定したバイトのブロックを書き込む。デフォルトは512byte |
skip=blocks | 入力ファイルの先頭から指定したブロックをスキップする |
seek=blocks | 出力ファイル中の指定したブロックをスキップする |
count | 入力から出力へ指定したブロックをコピーする |
ファイルをフロッピーディスクに複製するには、
# dd if=/tmp/fdd.img of=/dev/fd0 |
フロッピーディスクからHDD にコピーするには、if と of の指定を逆にします。
# dd if=/dev/fd0 of=/tmp/fdd.img |
カーネルのコピーをとるには以下のようにします。
# dd if=/boot/vmlinuz of=/dev/fd0 |
CD-ROMのイメージファイルの作成には以下のようにします。この時、ファイルシステムを通さずにデバイスから直接データを受け取るため、CD-ROMをマウントしている必要はありません。
# dd if=/dev/cdrom of=cdrom.iso |
MBR(ディスクの先頭512bytesのデータ)をコピーするには、
# dd if=/dev/hda of=mbr.img bs=512 count=1 |
dd コマンドはイメージの複製以外にも、HDD を完全に消去することもできます。ゼロ(zero)をディスク全体に書き込むことでデータを完全に抹消します。消去の対象となるのは、ディスク全体かパーティション全体になります。プライマリマスターのHDD全体を消去するには下記のコマンドを打ち込みます。
# dd if=/dev/zero of=/dev/hda |
より安全にデータを消去したい場合は、以下のように乱数を生成する仮想デバイス/dev/urandom からのランダムデータを2回ほどHDDに書き込み、最後にもう一度/dev/zero
でゼロを出力します。
# dd if=/dev/urandom
of=/dev/hda # dd if=/dev/urandom of=/dev/hda # dd if=/dev/zero of=/dev/hda |
テープデバイスのステータスを表示します。 # mt -f /dev/st0 status
rsync [オプション] 同期元 [同期先] |
|
-a | --archive | -rlptgoD と同じ |
-r | --recursive | 指定ディレクトリ配下をすべて対象とする |
-l | --links | シンボリックリンクをそのままシンボリックリンクとしてコピー |
-p | --perms | パーミッションをそのままコピー |
-t | --times | タイムスタンプをそのままコピー |
-h | -h | シンボリックリンク自体のグループを変更する |
-g | --group | グループをそのままコピー |
-o | --owner | ファイル所有者をそのままコピー (root のみ有効) |
-D | --devices --specials と同じ | |
--devices | ブロックデバイスをコピー (root のみ有効) | |
--specials | 名前付きパイプや FIFO などの特殊ファイルをコピー | |
-H | --hard-links | ハードリンクをそのまま反映 |
-h | --human-readable | ファイルサイズのbytesをKやMで出力 |
-v | --verbose | コピーしたファイル名やバイト数などの転送情報を出力 |
-z | --compress | データ転送時に圧縮 |
--compress-level=NUM | NUMがゼロでない場合 --compress オプションが暗黙的に指定される | |
--skip-compress=LIST | リストファイル(LIST)に書かれたファイルは圧縮しない | |
-c | --checksum | タイムスタンプとファイルサイズではなくチェックサムで差分を確認 |
-u | --update | 転送先に既にファイルが存在し、転送先のタイムスタンプの方が新しい場合は転送しない |
-n | --dry-run | コピーや転送を実際には行わず転送内容のみ出力 |
--delete | 転送元に存在しないファイルは削除 | |
--exclude=PATTERN | 指定したパターンにマッチしたファイルは処理しない | |
#コピー元(hoge1)からコピー先(tege2)へ再帰的にオーナー、グループ、パーミッション、タイムスタンプをそのままコピーする。 $ rsync -a hoge1 tege2 #コピー元(hoge1)とコピー先(tege2)を比較し、追加や更新されたファイル、ディレクトリのみをコピーする。 $ rsync -u hoge1 tege2 #コピーしているファイル名などの情報を表示する。 $ rsync -v hoge1 tege2 #コピー元(hoge1)にないディレクトリやファイルをコピー先(tege2)で削除する。 $ rsync --delete hoge1 tege2
ディレクトリ指定時の注意点 同期元のディレクトリ末尾の「/」を省略した場合は、同期先のディレクトリの“中”に同期元と同じ名前のディレクトリが作成されます。 例えば、「rsync -av mydata/ backup-mydata/」とした場合は、「mydata」の中にあるファイルやディレクトリが「backup-mydata」ディレクトリの中にコピーされます。 これに対し、「rsync -av mydata backup-mydata/」とした場合は、「backup-mydata」の中に「mydata」ディレクトリが作成されることになります。なお、同期先の末尾の「/」の有無は影響しません。
www.it-shikaku.jp